<!DOCTYPE html>
<html class="client-nojs vector-feature-night-mode-disabled vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-1 vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-1 vector-sticky-header-enabled" lang="en" dir="ltr"><head>
<meta charset="UTF-8">
<title>Assignment (computer science)</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="canonical" href="https://en.wikipedia.org/wiki/Assignment_(computer_science)"> <link href="./mw/ext.cite.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/ext.pygments.css" rel="stylesheet" type="text/css">
<link href="./mw/skins.vector.icons.css" rel="stylesheet" type="text/css">
<link href="./mw/skins.vector.search.codex.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/skins.vector.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/user.styles.css" rel="stylesheet" type="text/css">
<meta name="ResourceLoaderDynamicStyles" content="">
<link rel="stylesheet" type="text/css" href="./mw/site.styles.css">
<link rel="stylesheet" type="text/css" href="./mw/noscript.css">
<link rel="stylesheet" type="text/css" href="./footer.css">
<link rel="stylesheet" type="text/css" href="./vector-2022.css">
</head>
<body class="skin--responsive skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject page-Assignment_computer_science rootpage-Assignment_computer_science skin-vector-2022 action-view">
<div class="mw-page-container">
<div class="mw-page-container-inner">
<div class="mw-content-container">
<main id="content" class="mw-body">
<header class="mw-body-header vector-page-titlebar">
<h1 id="firstHeading" class="firstHeading mw-first-heading">
<span id="openzim-page-title" class="mw-page-title-main"><span class="mw-page-title-main">Assignment (computer science)</span></span>
</h1>
</header>
<a id="top"></a>
<div id="bodyContent" class="vector-body ve-init-mw-desktopArticleTarget-targetContainer" aria-labelledby="firstHeading" data-mw-ve-target-container="">
<div id="mw-content-text" class="mw-body-content mw-content-ltr" lang="en" dir="ltr"><div class="mw-content-ltr mw-parser-output" lang="en" dir="ltr">
<style data-mw-deduplicate="TemplateStyles:r1236090951">
/* start https://en.wikipedia.org/ */
.mw-parser-output .hatnote{font-style:italic}.mw-parser-output div.hatnote{padding-left:1.6em;margin-bottom:0.5em}.mw-parser-output .hatnote i{font-style:normal}.mw-parser-output .hatnote+link+.hatnote{margin-top:-0.5em}@media print{body.ns-0 .mw-parser-output .hatnote{display:none!important}}
/* end https://en.wikipedia.org/ */
</style><div role="note" class="hatnote navigation-not-searchable">For assignment of letters to disk file systems, see <a href="Drive_letter_assignment" title="Drive letter assignment">Drive letter assignment</a>.</div>
<p>In <a href="Computer_programming" title="Computer programming">computer programming</a>, an <b>assignment statement</b> sets and/or re-sets the <a href="Value_(computer_science)" title="Value (computer science)">value</a> stored in the storage location(s) denoted by a <a href="Variable_(programming)" class="mw-redirect" title="Variable (programming)">variable</a> <a href="Name" title="Name">name</a>; in other words, it copies a value into the variable. In most <a href="Imperative_programming" title="Imperative programming">imperative</a> <a href="Programming_language" title="Programming language">programming languages</a>, the assignment statement (or expression) is a fundamental construct.
</p><p>Today, the most commonly used notation for this operation is <code><i>x</i> = <i>expr</i></code> (originally <a href="Superplan" title="Superplan">Superplan</a> 1949–51, popularized by <a href="Fortran" title="Fortran">Fortran</a> 1957 and <a href="C_(programming_language)" title="C (programming language)">C</a>). The second most commonly used notation is<sup id="cite_ref-2CS24_1-0" class="reference"><a href="#cite_note-2CS24-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup> <code><i>x</i> := <i>expr</i></code> (originally <a href="ALGOL" title="ALGOL">ALGOL</a> 1958, popularised by <a href="Pascal_(programming_language)" title="Pascal (programming language)">Pascal</a>).<sup id="cite_ref-weisskop_2-0" class="reference"><a href="#cite_note-weisskop-2"><span class="cite-bracket">[</span>2<span class="cite-bracket">]</span></a></sup> Many other notations are also in use. In some languages, the symbol used is regarded as an <a href="Operator_(programming)" class="mw-redirect" title="Operator (programming)">operator</a> (meaning that the assignment statement as a whole returns a value). Other languages define assignment as a statement (meaning that it cannot be used in an expression).
</p><p>Assignments typically allow a variable to hold different values at different times during its life-span and <a href="Scope_(programming)" class="mw-redirect" title="Scope (programming)">scope</a>. However, some languages (primarily <a href="Functional_programming" title="Functional programming">strictly functional</a> languages) do not allow that kind of "destructive" reassignment, as it might imply changes of non-local state. The purpose is to enforce <a href="Referential_transparency" title="Referential transparency">referential transparency</a>, i.e. functions that do not depend on the state of some variable(s), but produce the same results for a given set of parametric inputs at any point in time. Modern programs in other languages also often use similar strategies, although less strict, and only in certain parts, in order to reduce complexity, normally in conjunction with complementing methodologies such as <a href="Data_structures" class="mw-redirect" title="Data structures">data structuring</a>, <a href="Structured_programming" title="Structured programming">structured programming</a> and <a href="Object-oriented_programming" title="Object-oriented programming">object orientation</a>.
</p>
<meta property="mw:PageProp/toc">
<div class="mw-heading mw-heading2"><h2 id="Semantics">Semantics</h2></div>
<p>An assignment operation is a process in <a href="Imperative_programming" title="Imperative programming">imperative programming</a> in which different values are associated with a particular variable name as time passes.<sup id="cite_ref-2CS24_1-1" class="reference"><a href="#cite_note-2CS24-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup> The program, in such model, operates by changing its state using successive assignment statements.<sup id="cite_ref-weisskop_2-1" class="reference"><a href="#cite_note-weisskop-2"><span class="cite-bracket">[</span>2<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-Flaig2008_3-0" class="reference"><a href="#cite_note-Flaig2008-3"><span class="cite-bracket">[</span>3<span class="cite-bracket">]</span></a></sup> Primitives of imperative programming languages rely on assignment to do <a href="Iteration#Computing" title="Iteration">iteration</a>.<sup id="cite_ref-Bruce_Tate_4-0" class="reference"><a href="#cite_note-Bruce_Tate-4"><span class="cite-bracket">[</span>4<span class="cite-bracket">]</span></a></sup> At the lowest level, assignment is implemented using <a href="Assembly_language" title="Assembly language">machine operations</a> such as <code>MOVE</code> or <code>STORE</code>.<sup id="cite_ref-weisskop_2-2" class="reference"><a href="#cite_note-weisskop-2"><span class="cite-bracket">[</span>2<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-Bruce_Tate_4-1" class="reference"><a href="#cite_note-Bruce_Tate-4"><span class="cite-bracket">[</span>4<span class="cite-bracket">]</span></a></sup>
</p><p><a href="Variable_(programming)" class="mw-redirect" title="Variable (programming)">Variables</a> are containers for values. It is possible to put a value into a variable and later replace it with a new one. An assignment operation modifies the current state of the executing program.<sup id="cite_ref-Flaig2008_3-1" class="reference"><a href="#cite_note-Flaig2008-3"><span class="cite-bracket">[</span>3<span class="cite-bracket">]</span></a></sup> Consequently, assignment is dependent on the concept of <a href="Variable_(programming)" class="mw-redirect" title="Variable (programming)">variables</a>. In an assignment:
</p>
<ul><li>The <code><i>expression</i></code> is evaluated in the current state of the program.</li>
<li>The <code><i>variable</i></code> is assigned the computed value, replacing the prior value of that variable.</li></ul>
<p>Example: Assuming that <code>a</code> is a numeric variable, the assignment <code>a := 2*a</code> means that the content of the variable <code>a</code> is doubled after the execution of the statement.
</p><p>An example segment of <a href="C_(programming_language)" title="C (programming language)">C</a> code:
</p>
<div class="mw-highlight mw-highlight-lang-c mw-content-ltr" dir="ltr"><pre><span class="kt">int</span><span class="w"> </span><span class="n">x</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">10</span><span class="p">;</span><span class="w"> </span>
<span class="kt">float</span><span class="w"> </span><span class="n">y</span><span class="p">;</span>
<span class="n">x</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">23</span><span class="p">;</span>
<span class="n">y</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">32.4f</span><span class="p">;</span>
</pre></div>
<p>In this sample, the variable <code>x</code> is first declared as an int, and is then assigned the value of 10. Notice that the declaration and assignment occur in the same statement. In the second line, <code>y</code> is declared without an assignment. In the third line, <code>x</code> is reassigned the value of 23. Finally, <code>y</code> is assigned the value of 32.4.
</p><p>For an assignment operation, it is necessary that the value of the <code><i>expression</i></code> is well-defined (it is a valid <a href="Value_(computer_science)" title="Value (computer science)">rvalue</a>) and that the <code><i>variable</i></code> represents a modifiable entity (it is a valid modifiable (non-<a href="Const" class="mw-redirect" title="Const">const</a>) <a href="Value_(computer_science)" title="Value (computer science)">lvalue</a>). In some languages, typically <a href="Dynamic_programming_language" title="Dynamic programming language">dynamic</a> ones, it is not necessary to declare a variable prior to assigning it a value. In such languages, a variable is automatically declared the first time it is assigned to, with the scope it is declared in varying by language.
</p>
<div class="mw-heading mw-heading2"><h2 id="Single_assignment">Single assignment</h2></div>
<div role="note" class="hatnote navigation-not-searchable">See also: <a href="Static_single-assignment_form" title="Static single-assignment form">Static single-assignment form</a></div>
<p>Any assignment that changes an existing value (e.g. <code>x := x + 1</code>) is disallowed in <a href="Purely_functional_programming" title="Purely functional programming">purely functional</a> languages.<sup id="cite_ref-Bruce_Tate_4-2" class="reference"><a href="#cite_note-Bruce_Tate-4"><span class="cite-bracket">[</span>4<span class="cite-bracket">]</span></a></sup> In <a href="Functional_programming" title="Functional programming">functional programming</a>, assignment is discouraged in favor of single assignment, more commonly known as <i>initialization</i>. Single assignment is an example of <a href="Name_binding" title="Name binding">name binding</a> and differs from assignment as described in this article in that it can only be done once, usually when the variable is created; no subsequent reassignment is allowed.
</p><p>An evaluation of an expression does not have a <a href="Side_effect_(computer_science)" title="Side effect (computer science)">side effect</a> if it does not change an observable state of the machine,<sup id="cite_ref-Mitchell2003_5-0" class="reference"><a href="#cite_note-Mitchell2003-5"><span class="cite-bracket">[</span>5<span class="cite-bracket">]</span></a></sup> other than producing the result, and always produces same value for the same input.<sup id="cite_ref-Bruce_Tate_4-3" class="reference"><a href="#cite_note-Bruce_Tate-4"><span class="cite-bracket">[</span>4<span class="cite-bracket">]</span></a></sup> Imperative assignment can introduce side effects while destroying and making the old value unavailable while substituting it with a new one,<sup id="cite_ref-csci210_6-0" class="reference"><a href="#cite_note-csci210-6"><span class="cite-bracket">[</span>6<span class="cite-bracket">]</span></a></sup> and is referred to as <i>destructive assignment</i> for that reason in <a href="LISP" class="mw-redirect" title="LISP">LISP</a> and <a href="Functional_programming" title="Functional programming">functional programming</a>, similar to <a href="Destructive_update" class="mw-redirect" title="Destructive update">destructive updating</a>.
</p><p>Single assignment is the only form of assignment available in purely functional languages, such as <a href="Haskell_(programming_language)" class="mw-redirect" title="Haskell (programming language)">Haskell</a>, which do not have variables in the sense of imperative programming languages<sup id="cite_ref-Bruce_Tate_4-4" class="reference"><a href="#cite_note-Bruce_Tate-4"><span class="cite-bracket">[</span>4<span class="cite-bracket">]</span></a></sup> but rather named constant values possibly of compound nature, with their elements progressively defined <i>on-demand</i>, for the <a href="Lazy_evaluation" title="Lazy evaluation">lazy</a> languages. Purely functional languages can provide an opportunity for <a href="Parallel_computing" title="Parallel computing">computation to be performed in parallel</a>, avoiding the <a href="Von_Neumann_bottleneck" class="mw-redirect" title="Von Neumann bottleneck">von Neumann bottleneck</a> of sequential one step at a time execution, since values are independent of each other.<sup id="cite_ref-Mitchell2003.1_7-0" class="reference"><a href="#cite_note-Mitchell2003.1-7"><span class="cite-bracket">[</span>7<span class="cite-bracket">]</span></a></sup>
</p><p>Impure functional languages provide both single assignment as well as true assignment (though true assignment is typically used with less frequency than in imperative programming languages). For example, in Scheme, both single assignment (with <code>let</code>) and true assignment (with <code>set!</code>) can be used on all variables, and specialized primitives are provided for destructive update inside lists, vectors, strings, etc. In OCaml, only single assignment is allowed for variables, via the <code>let <i>name</i> = <i>value</i></code> syntax; however destructive update can be used on elements of arrays and strings with separate <code><-</code> operator, as well as on fields of records and objects that have been explicitly declared <a href="Mutable" class="mw-redirect" title="Mutable">mutable</a> (meaning capable of being changed after their initial declaration) by the programmer.
</p><p>Functional programming languages that use single assignment include <a href="Clojure" title="Clojure">Clojure</a> (for data structures, not vars), <a href="Erlang_(programming_language)" title="Erlang (programming language)">Erlang</a> (it accepts multiple assignment if the values are equal, in contrast to Haskell), <a href="F_Sharp_(programming_language)" title="F Sharp (programming language)">F#</a>, <a href="Haskell_(programming_language)" class="mw-redirect" title="Haskell (programming language)">Haskell</a>, <a href="JavaScript" title="JavaScript">JavaScript</a> (for constants), Lava, <a href="OCaml" title="OCaml">OCaml</a>, <a href="Oz_(programming_language)" title="Oz (programming language)">Oz</a> (for dataflow variables, not cells), <a href="Racket_(programming_language)" title="Racket (programming language)">Racket</a> (for some data structures like lists, not symbols), <a href="SASL_(programming_language)" title="SASL (programming language)">SASL</a>, <a href="Scala_(programming_language)" title="Scala (programming language)">Scala</a> (for vals), <a href="SISAL" title="SISAL">SISAL</a>, <a href="Standard_ML" title="Standard ML">Standard ML</a>. Non-<a href="Backtracking" title="Backtracking">backtracking</a> <a href="Prolog" title="Prolog">Prolog</a> code can be considered <i>explicit</i> single-assignment, explicit in a sense that its (named) variables can be in explicitly unassigned state, or be set exactly once. In Haskell, by contrast, there can be no unassigned variables, and every variable can be thought of as being implicitly set, when it is created, to its value (or rather to a computational object that will produce its value <i>on demand</i>).
</p>
<div class="mw-heading mw-heading2"><h2 id="Value_of_an_assignment">Value of an assignment</h2></div>
<p>In some programming languages, an assignment statement returns a value, while in others it does not.
</p><p>In most <a href="Expression-oriented_programming_languages" class="mw-redirect" title="Expression-oriented programming languages">expression-oriented programming languages</a> (for example, <a href="C_(programming_language)" title="C (programming language)">C</a>), the assignment statement returns the assigned value, allowing such idioms as <code>x = y = a</code>, in which the assignment statement <code>y = a</code> returns the value of <code>a</code>, which is then assigned to <code>x</code>. In a statement such as <code class="mw-highlight mw-highlight-lang-c mw-content-ltr" style="" dir="ltr"><span class="k">while</span><span class="w"> </span><span class="p">((</span><span class="n">ch</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">getchar</span><span class="p">())</span><span class="w"> </span><span class="o">!=</span><span class="w"> </span><span class="n">EOF</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="err">…</span><span class="p">}</span></code>, the return value of a function is used to control a loop while assigning that same value to a variable.
</p><p>In other programming languages, <a href="Scheme_(programming_language)" title="Scheme (programming language)">Scheme</a> for example, the return value of an assignment is undefined and such idioms are invalid.
</p><p>In <a href="Haskell_(programming_language)" class="mw-redirect" title="Haskell (programming language)">Haskell</a>,<sup id="cite_ref-haskell_8-0" class="reference"><a href="#cite_note-haskell-8"><span class="cite-bracket">[</span>8<span class="cite-bracket">]</span></a></sup> there is no variable assignment; but operations similar to assignment (like assigning to a field of an array or a field of a mutable data structure) usually evaluate to the <a href="Unit_type" title="Unit type">unit type</a>, which is represented as <code>()</code>. This type has only one possible value, therefore containing no information. It is typically the type of an expression that is evaluated purely for its side effects.
</p>
<div class="mw-heading mw-heading2"><h2 id="Variant_forms_of_assignment">Variant forms of assignment</h2></div>
<p>Certain use patterns are very common, and thus often have special syntax to support them. These are primarily <a href="Syntactic_sugar" title="Syntactic sugar">syntactic sugar</a> to reduce redundancy in the source code, but also assists readers of the code in understanding the programmer's intent, and provides the compiler with a clue to possible optimization.
</p>
<div class="mw-heading mw-heading3"><h3 id="Augmented_assignment">Augmented assignment</h3></div>
<div role="note" class="hatnote navigation-not-searchable">Main article: <a href="Augmented_assignment" title="Augmented assignment">Augmented assignment</a></div>
<p>The case where the assigned value depends on a previous one is so common that many imperative languages, most notably <a href="C_(programming_language)" title="C (programming language)">C</a> and the majority of its descendants, provide special operators called <a href="Augmented_assignment" title="Augmented assignment">augmented assignment</a>, like <code>*=</code>, so <code>a = 2*a</code> can instead be written as <code>a *= 2</code>.<sup id="cite_ref-Flaig2008_3-2" class="reference"><a href="#cite_note-Flaig2008-3"><span class="cite-bracket">[</span>3<span class="cite-bracket">]</span></a></sup> Beyond syntactic sugar, this assists the task of the compiler by making clear that in-place modification of the variable <code>a</code> is possible.
</p>
<div class="mw-heading mw-heading3"><h3 id="Chained_assignment">Chained assignment</h3></div>
<p>A statement like <code>w = x = y = z</code> is called a <b>chained assignment</b> in which the value of <code>z</code> is assigned to multiple variables <code>w, x,</code> and <code>y</code>. Chained assignments are often used to initialize multiple variables, as in
</p><p><code>a = b = c = d = f = 0</code>
</p><p>Not all programming languages support chained assignment. Chained assignments are equivalent to a sequence of assignments, but the evaluation strategy differs between languages. For simple chained assignments, like initializing multiple variables, the evaluation strategy does not matter, but if the targets (l-values) in the assignment are connected in some way, the evaluation strategy affects the result.
</p><p>In some programming languages (<a href="C_(programming_language)" title="C (programming language)">C</a> for example), chained assignments are supported because assignments are expressions, and have values. In this case chain assignment can be implemented by having a <a href="Operator_associativity#Right-associativity_of_assignment_operators" title="Operator associativity">right-associative assignment</a>, and assignments happen right-to-left. For example, <code>i = arr[i] = f()</code> is equivalent to <code>arr[i] = f(); i = arr[i]</code>. In <a href="C%2B%2B" title="C++">C++</a> they are also available for values of class types by declaring the appropriate return type for the assignment operator.
</p><p>In <a href="Python_(programming_language)" title="Python (programming language)">Python</a>, assignment statements are not expressions and thus do not have a value. Instead, chained assignments are a series of statements with multiple targets for a single expression. The assignments are executed left-to-right so that <code>i = arr[i] = f()</code> evaluates the expression <code>f()</code>, then assigns the result to the leftmost target, <code>i</code>, and then assigns the same result to the next target, <code>arr[i]</code>, using the new value of <code>i</code>.<sup id="cite_ref-9" class="reference"><a href="#cite_note-9"><span class="cite-bracket">[</span>9<span class="cite-bracket">]</span></a></sup> This is essentially equivalent to <code>tmp = f(); i = tmp; arr[i] = tmp</code> though no actual variable is produced for the temporary value.
</p>
<div class="mw-heading mw-heading3"><h3 id="Parallel_assignment">Parallel assignment</h3></div>
<p>Some programming languages, such as <a href="APL_(programming_language)" title="APL (programming language)">APL</a>, <a href="Common_Lisp" title="Common Lisp">Common Lisp</a>,<sup id="cite_ref-10" class="reference"><a href="#cite_note-10"><span class="cite-bracket">[</span>10<span class="cite-bracket">]</span></a></sup> <a href="Go_(programming_language)" title="Go (programming language)">Go</a>,<sup id="cite_ref-11" class="reference"><a href="#cite_note-11"><span class="cite-bracket">[</span>11<span class="cite-bracket">]</span></a></sup> <a href="JavaScript" title="JavaScript">JavaScript</a> (since 1.7), <a href="Julia_(programming_language)" title="Julia (programming language)">Julia</a>, <a href="PHP" title="PHP">PHP</a>, <a href="Maple_(software)" title="Maple (software)">Maple</a>, <a href="Lua_(programming_language)" class="mw-redirect" title="Lua (programming language)">Lua</a>, <a href="Occam_(programming_language)#occam_2" title="Occam (programming language)">occam 2</a>,<sup id="cite_ref-occam_12-0" class="reference"><a href="#cite_note-occam-12"><span class="cite-bracket">[</span>12<span class="cite-bracket">]</span></a></sup> <a href="Perl" title="Perl">Perl</a>,<sup id="cite_ref-perl_13-0" class="reference"><a href="#cite_note-perl-13"><span class="cite-bracket">[</span>13<span class="cite-bracket">]</span></a></sup> <a href="Python_(programming_language)" title="Python (programming language)">Python</a>,<sup id="cite_ref-python_14-0" class="reference"><a href="#cite_note-python-14"><span class="cite-bracket">[</span>14<span class="cite-bracket">]</span></a></sup> <a href="REBOL" class="mw-redirect" title="REBOL">REBOL</a>, <a href="Ruby_(programming_language)" title="Ruby (programming language)">Ruby</a>,<sup id="cite_ref-ruby_15-0" class="reference"><a href="#cite_note-ruby-15"><span class="cite-bracket">[</span>15<span class="cite-bracket">]</span></a></sup> and <a href="PowerShell" title="PowerShell">PowerShell</a> allow several variables to be assigned in parallel, with syntax like:
</p>
<pre>a, b := 0, 1
</pre>
<p>which simultaneously assigns 0 to <code>a</code> and 1 to <code>b</code>. This is most often known as <b>parallel assignment</b>; it was introduced in <a href="CPL_(programming_language)" title="CPL (programming language)">CPL</a> in 1963, under the name <b>simultaneous assignment</b>,<sup id="cite_ref-16" class="reference"><a href="#cite_note-16"><span class="cite-bracket">[</span>16<span class="cite-bracket">]</span></a></sup> and is sometimes called <b>multiple assignment</b>, though this is confusing when used with "single assignment", as these are not opposites. If the right-hand side of the assignment is a single variable (e.g. an array or structure), the feature is called <b>unpacking</b><sup id="cite_ref-17" class="reference"><a href="#cite_note-17"><span class="cite-bracket">[</span>17<span class="cite-bracket">]</span></a></sup> or <b>destructuring assignment</b>:<sup id="cite_ref-18" class="reference"><a href="#cite_note-18"><span class="cite-bracket">[</span>18<span class="cite-bracket">]</span></a></sup>
</p>
<pre><b>var</b> list := {0, 1}
a, b := list
</pre>
<p>The list will be unpacked so that 0 is assigned to <code>a</code> and 1 to <code>b</code>. Furthermore,
</p>
<pre>a, b := b, a
</pre>
<p>swaps the values of <code>a</code> and <code>b</code>. In languages without parallel assignment, this would have to be written to use a temporary variable
</p>
<pre><b>var</b> t := a
a := b
b := t
</pre>
<p>since <code>a := b; b := a</code> leaves both <code>a</code> and <code>b</code> with the original value of <code>b</code>.
</p><p>Some languages, such as <a href="Go_(programming_language)" title="Go (programming language)">Go</a>, <a href="F_Sharp_(programming_language)" title="F Sharp (programming language)">F#</a> and <a href="Python_(programming_language)" title="Python (programming language)">Python</a>, combine parallel assignment, tuples, and automatic <a href="https://en.wikibooks.org/wiki/Python_Programming/Tuples#Packing_and_Unpacking" class="extiw external" title="b:Python Programming/Tuples">tuple unpacking</a> to allow multiple return values from a single function, as in this Python example,
</p>
<div class="mw-highlight mw-highlight-lang-python mw-content-ltr" dir="ltr"><pre><span class="k">def</span><span class="w"> </span><span class="nf">f</span><span class="p">():</span>
<span class="k">return</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">2</span>
<span class="n">a</span><span class="p">,</span> <span class="n">b</span> <span class="o">=</span> <span class="n">f</span><span class="p">()</span>
</pre></div>
<p>while other languages, such as <a href="C_sharp_(programming_language)" class="mw-redirect" title="C sharp (programming language)">C#</a> and <a href="Rust_(programming_language)" title="Rust (programming language)">Rust</a>, shown here, require explicit tuple construction and deconstruction with parentheses:
</p>
<div class="mw-highlight mw-highlight-lang-csharp mw-content-ltr" dir="ltr"><pre><span class="c1">// Valid C# or Rust syntax</span>
<span class="p">(</span><span class="n">a</span><span class="p">,</span><span class="w"> </span><span class="n">b</span><span class="p">)</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">(</span><span class="n">b</span><span class="p">,</span><span class="w"> </span><span class="n">a</span><span class="p">);</span>
</pre></div>
<div class="mw-highlight mw-highlight-lang-csharp mw-content-ltr" dir="ltr"><pre><span class="c1">// C# tuple return</span>
<span class="p">(</span><span class="kt">string</span><span class="p">,</span><span class="w"> </span><span class="kt">int</span><span class="p">)</span><span class="w"> </span><span class="n">f</span><span class="p">()</span><span class="w"> </span><span class="o">=></span><span class="w"> </span><span class="p">(</span><span class="s">"foo"</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">);</span>
<span class="kt">var</span><span class="w"> </span><span class="p">(</span><span class="n">a</span><span class="p">,</span><span class="w"> </span><span class="n">b</span><span class="p">)</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">f</span><span class="p">();</span>
</pre></div>
<div class="mw-highlight mw-highlight-lang-rust mw-content-ltr" dir="ltr"><pre><span class="c1">// Rust tuple return</span>
<span class="kd">let</span><span class="w"> </span><span class="n">f</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="o">||</span><span class="w"> </span><span class="p">(</span><span class="s">"foo"</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">);</span>
<span class="kd">let</span><span class="w"> </span><span class="p">(</span><span class="n">a</span><span class="p">,</span><span class="w"> </span><span class="n">b</span><span class="p">)</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">f</span><span class="p">();</span>
</pre></div>
<p>This provides an alternative to the use of <a href="Output_parameter" class="mw-redirect" title="Output parameter">output parameters</a> for returning multiple values from a function. This dates to <a href="CLU_(programming_language)" title="CLU (programming language)">CLU</a> (1974), and CLU helped popularize parallel assignment generally.
</p><p>C# additionally allows generalized <i>deconstruction assignment</i> with implementation defined by the expression on the right-hand side, as the compiler searches for an appropriate <a href="Instance_method" class="mw-redirect" title="Instance method">instance</a> or <a href="Extension_method" title="Extension method">extension</a> <code>Deconstruct</code> method on the expression, which must have output parameters for the variables being assigned to.<sup id="cite_ref-19" class="reference"><a href="#cite_note-19"><span class="cite-bracket">[</span>19<span class="cite-bracket">]</span></a></sup> For example, one such method that would give the <a href="Class_(computer_programming)" title="Class (computer programming)">class</a> it appears in the same behavior as the return value of <code>f()</code> above would be
</p>
<div class="mw-highlight mw-highlight-lang-csharp mw-content-ltr" dir="ltr"><pre><span class="k">void</span><span class="w"> </span><span class="nf">Deconstruct</span><span class="p">(</span><span class="k">out</span><span class="w"> </span><span class="kt">string</span><span class="w"> </span><span class="n">a</span><span class="p">,</span><span class="w"> </span><span class="k">out</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">b</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">"foo"</span><span class="p">;</span><span class="w"> </span><span class="n">b</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span><span class="w"> </span><span class="p">}</span>
</pre></div>
<p>In C and C++, the <a href="Comma_operator" title="Comma operator">comma operator</a> is similar to parallel assignment in allowing multiple assignments to occur within a single statement, writing <code>a = 1, b = 2</code> instead of <code>a, b = 1, 2</code>.
This is primarily used in <a href="Comma_operator#For_loops" title="Comma operator">for loops</a>, and is replaced by parallel assignment in other languages such as Go.<sup id="cite_ref-20" class="reference"><a href="#cite_note-20"><span class="cite-bracket">[</span>20<span class="cite-bracket">]</span></a></sup>
However, the above C++ code does not ensure perfect simultaneity, since the right side of the following code <code>a = b, b = a+1</code> is evaluated after the left side. In languages such as Python, <code>a, b = b, a+1</code> will assign the two variables concurrently, using the initial value of a to compute the new b.
</p>
<div class="mw-heading mw-heading2"><h2 id="Assignment_versus_equality">Assignment versus equality</h2></div>
<div role="note" class="hatnote navigation-not-searchable">See also: <a href="Relational_operator#Confusion_with_assignment_operators" title="Relational operator">Relational operator § Confusion with assignment operators</a></div>
<p>The use of the equals sign <code>=</code> as an assignment operator has been frequently criticized, due to the conflict with equals as comparison for equality. This results both in confusion by novices in writing code, and confusion even by experienced programmers in reading code. The use of equals for assignment dates back to <a href="Heinz_Rutishauser" title="Heinz Rutishauser">Heinz Rutishauser</a>'s language <a href="Superplan" title="Superplan">Superplan</a>, designed from 1949 to 1951, and was particularly popularized by Fortran:
</p>
<style data-mw-deduplicate="TemplateStyles:r1244412712">
/* start https://en.wikipedia.org/ */
.mw-parser-output .templatequote{overflow:hidden;margin:1em 0;padding:0 32px}.mw-parser-output .templatequotecite{line-height:1.5em;text-align:left;margin-top:0}@media(min-width:500px){.mw-parser-output .templatequotecite{padding-left:1.6em}}
/* end https://en.wikipedia.org/ */
</style><blockquote class="templatequote"><p>A notorious example for a bad idea was the choice of the equal sign to denote assignment. It goes back to Fortran in 1957<sup id="cite_ref-21" class="reference"><a href="#cite_note-21"><span class="cite-bracket">[</span>a<span class="cite-bracket">]</span></a></sup> and has blindly been copied by armies of language designers. Why is it a bad idea? Because it overthrows a century old tradition to let “=” denote a comparison for equality, a predicate which is either true or false. But Fortran made it to mean assignment, the enforcing of equality. In this case, the operands are on unequal footing: The left operand (a variable) is to be made equal to the right operand (an expression). x = y does not mean the same thing as y = x.<sup id="cite_ref-22" class="reference"><a href="#cite_note-22"><span class="cite-bracket">[</span>21<span class="cite-bracket">]</span></a></sup></p></blockquote><div class="templatequotecite"><p style="display: inline; padding-left: 2.3em;">— <a href="Niklaus_Wirth" title="Niklaus Wirth">Niklaus Wirth</a>, <i>Good Ideas, Through the Looking Glass</i></p></div>
<p>Beginning programmers sometimes confuse assignment with the <a href="Relational_operator" title="Relational operator">relational operator</a> for equality, as "=" means <a href="Equality_(mathematics)" title="Equality (mathematics)">equality</a> in mathematics, and is used for assignment in many languages. But assignment alters the value of a variable, while equality testing tests whether two expressions have the same value.
</p><p>In some languages, such as <a href="BASIC" title="BASIC">BASIC</a>, a single equals sign (<code>"="</code>) is used for both the assignment operator and the equality relational operator, with context determining which is meant. Other languages use different symbols for the two operators.<sup id="cite_ref-23" class="reference"><a href="#cite_note-23"><span class="cite-bracket">[</span>22<span class="cite-bracket">]</span></a></sup> For example:
</p>
<ul><li>In <a href="ALGOL" title="ALGOL">ALGOL</a> and <a href="Pascal_(programming_language)" title="Pascal (programming language)">Pascal</a>, the assignment operator is a colon and an equals sign (<code>":="</code>) while the equality operator is a single equals (<code>"="</code>).</li>
<li>In <a href="C_(programming_language)" title="C (programming language)">C</a>, the assignment operator is a single equals sign (<code>"="</code>) while the equality operator is a pair of equals signs (<code>"=="</code>).</li>
<li>In <a href="R_(programming_language)" title="R (programming language)">R</a>, the assignment operator is basically <code><-</code>, as in <code>x <- value</code>, but a single equals sign can be used in certain contexts.</li></ul>
<p>The similarity in the two symbols can lead to errors if the programmer forgets which form ("<code>=</code>", "<code>==</code>", "<code>:=</code>") is appropriate, or mistypes "<code>=</code>" when "<code>==</code>" was intended. This is a common programming problem with languages such as C (including one famous attempt to backdoor the Linux kernel),<sup id="cite_ref-24" class="reference"><a href="#cite_note-24"><span class="cite-bracket">[</span>23<span class="cite-bracket">]</span></a></sup> where the assignment operator also returns the value assigned (in the same way that a function returns a value), and can be validly nested inside expressions. If the intention was to compare two values in an <code>if</code> statement, for instance, an assignment is quite likely to return a value interpretable as Boolean true, in which case the <code>then</code> clause will be executed, leading the program to behave unexpectedly. Some language processors (such as <a href="GNU_Compiler_Collection" title="GNU Compiler Collection">gcc</a>) can detect such situations, and warn the programmer of the potential error.<sup id="cite_ref-25" class="reference"><a href="#cite_note-25"><span class="cite-bracket">[</span>24<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-26" class="reference"><a href="#cite_note-26"><span class="cite-bracket">[</span>25<span class="cite-bracket">]</span></a></sup>
</p>
<div class="mw-heading mw-heading2"><h2 id="Notation">Notation</h2></div>
<div role="note" class="hatnote navigation-not-searchable">See also: <a href="Comparison_of_programming_languages_(variable_and_constant_declarations)" class="mw-redirect" title="Comparison of programming languages (variable and constant declarations)">Comparison of programming languages (variable and constant declarations)</a></div>
<p>The two most common representations for the copying assignment are <a href="Equals_sign" title="Equals sign">equals sign</a> (<code>=</code>) and colon-equals (<code>:=</code>). Both forms may semantically denote either an assignment <i>statement</i> or an assignment <i><a href="Operator_(programming)" class="mw-redirect" title="Operator (programming)">operator</a></i> (which also has a value), depending on language and/or usage.
</p>
<dl><dd><table class="wikitable">
<tbody><tr>
<td><code><i>variable</i> = <i>expression</i></code></td>
<td><a href="Fortran" title="Fortran">Fortran</a>, <a href="PL/I" title="PL/I">PL/I</a>, <a href="C_(programming_language)" title="C (programming language)">C</a> (and descendants such as <a href="C%2B%2B" title="C++">C++</a>, <a href="Java_(programming_language)" title="Java (programming language)">Java</a>, etc.), <a href="Bourne_shell" title="Bourne shell">Bourne shell</a>, <a href="Python_(programming_language)" title="Python (programming language)">Python</a>, <a href="Go_(programming_language)" title="Go (programming language)">Go</a> (assignment to pre-declared variables), <a href="R_(programming_language)" title="R (programming language)">R</a>, <a href="PowerShell" title="PowerShell">PowerShell</a>, <a href="Nim_(programming_language)" title="Nim (programming language)">Nim</a>, etc.
</td></tr>
<tr>
<td><code><i>variable</i> := <i>expression</i></code></td>
<td><a href="ALGOL" title="ALGOL">ALGOL</a> (and derivatives), <a href="Simula" title="Simula">Simula</a>, <a href="CPL_(programming_language)" title="CPL (programming language)">CPL</a>, <a href="BCPL" title="BCPL">BCPL</a>, <a href="Pascal_(programming_language)" title="Pascal (programming language)">Pascal</a><sup id="cite_ref-pascal_27-0" class="reference"><a href="#cite_note-pascal-27"><span class="cite-bracket">[</span>26<span class="cite-bracket">]</span></a></sup> (and descendants such as <a href="Modula" title="Modula">Modula</a>), <a href="Mary_(programming_language)" title="Mary (programming language)">Mary</a>, <a href="PL/M" title="PL/M">PL/M</a>, <a href="Ada_(programming_language)" title="Ada (programming language)">Ada</a>, <a href="Smalltalk" title="Smalltalk">Smalltalk</a>, <a href="Eiffel_(programming_language)" title="Eiffel (programming language)">Eiffel</a>,<sup id="cite_ref-eiffel1_28-0" class="reference"><a href="#cite_note-eiffel1-28"><span class="cite-bracket">[</span>27<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-eiffel2_29-0" class="reference"><a href="#cite_note-eiffel2-29"><span class="cite-bracket">[</span>28<span class="cite-bracket">]</span></a></sup> <a href="Oberon_(programming_language)" title="Oberon (programming language)">Oberon</a>, <a href="Dylan_(programming_language)" title="Dylan (programming language)">Dylan</a>,<sup id="cite_ref-dylan_30-0" class="reference"><a href="#cite_note-dylan-30"><span class="cite-bracket">[</span>29<span class="cite-bracket">]</span></a></sup> <a href="Seed7" title="Seed7">Seed7</a>, <a href="Python_(programming_language)" title="Python (programming language)">Python</a> (an assignment expression),<sup id="cite_ref-31" class="reference"><a href="#cite_note-31"><span class="cite-bracket">[</span>30<span class="cite-bracket">]</span></a></sup> <a href="Go_(programming_language)" title="Go (programming language)">Go</a> (shorthand for declaring and defining a variable),<sup id="cite_ref-32" class="reference"><a href="#cite_note-32"><span class="cite-bracket">[</span>31<span class="cite-bracket">]</span></a></sup> <a href="Io_(programming_language)" title="Io (programming language)">Io</a>, <a href="AMPL" title="AMPL">AMPL</a>, <a href="ML_(programming_language)" title="ML (programming language)">ML</a> (assigning to a reference value),<sup id="cite_ref-ml_33-0" class="reference"><a href="#cite_note-ml-33"><span class="cite-bracket">[</span>32<span class="cite-bracket">]</span></a></sup> <a href="AutoHotkey" title="AutoHotkey">AutoHotkey</a> etc.
</td></tr>
</tbody></table></dd></dl>
<p>Other possibilities include a left arrow or a keyword, though there are other, rarer, variants:
</p>
<dl><dd><table class="wikitable">
<tbody><tr>
<td><code><i>variable</i> << <i>expression</i></code></td>
<td><a href="Magik_(programming_language)" title="Magik (programming language)">Magik</a>
</td></tr>
<tr>
<td><code><i>variable</i> <- <i>expression</i></code></td>
<td><a href="F_Sharp_(programming_language)" title="F Sharp (programming language)">F#</a>, <a href="OCaml" title="OCaml">OCaml</a>, <a href="R_(programming_language)" title="R (programming language)">R</a>, <a href="S_(programming_language)" title="S (programming language)">S</a>
</td></tr>
<tr>
<td><code><i>variable</i> <<- <i>expression</i></code></td>
<td><a href="R_(programming_language)" title="R (programming language)">R</a>
</td></tr>
<tr>
<td><code> assign("<i>variable</i>", <i>expression</i>)</code></td>
<td><a href="R_(programming_language)" title="R (programming language)">R</a>
</td></tr>
<tr>
<td><code><i>variable</i> ← <i>expression</i></code></td>
<td><a href="APL_(programming_language)" title="APL (programming language)">APL</a>,<sup id="cite_ref-aplbook_34-0" class="reference"><a href="#cite_note-aplbook-34"><span class="cite-bracket">[</span>33<span class="cite-bracket">]</span></a></sup> <a href="Smalltalk" title="Smalltalk">Smalltalk</a>, <a href="BASIC_Programming" title="BASIC Programming">Atari 2600 BASIC Programming</a>
</td></tr>
<tr>
<td><code><i>variable</i> =: <i>expression</i></code></td>
<td><a href="J_(programming_language)" title="J (programming language)">J</a>
</td></tr>
<tr>
<td><code>LET <i>variable</i> = <i>expression</i></code></td>
<td><a href="BASIC" title="BASIC">BASIC</a>
</td></tr>
<tr>
<td><code>let <i>variable</i> := <i>expression</i></code></td>
<td><a href="XQuery" title="XQuery">XQuery</a>
</td></tr>
<tr>
<td><code>set <i>variable</i> to <i>expression</i></code></td>
<td><a href="AppleScript" title="AppleScript">AppleScript</a>
</td></tr>
<tr>
<td><code>set <i>variable</i> = <i>expression</i></code></td>
<td><a href="C_shell" title="C shell">C shell</a>
</td></tr>
<tr>
<td><code>Set-Variable <i>variable</i> <i>(expression)</i></code></td>
<td><a href="PowerShell" title="PowerShell">PowerShell</a>
</td></tr>
<tr>
<td><code><i>variable</i> : <i>expression</i></code></td>
<td><a href="Macsyma" title="Macsyma">Macsyma, Maxima</a>, <a href="K_(programming_language)" title="K (programming language)">K</a>
</td></tr>
<tr>
<td><code><i>variable</i>: <i>expression</i></code></td>
<td><a href="Rebol" title="Rebol">Rebol</a>
</td></tr>
<tr>
<td><code>var <i>variable</i> <i>expression</i></code></td>
<td><a href="MIRC_scripting_language" title="MIRC scripting language">mIRC scripting language</a>
</td></tr>
<tr>
<td><code><i>reference-variable</i> :- <i>reference-expression</i></code></td>
<td><a href="Simula" title="Simula">Simula</a>
</td></tr></tbody></table></dd></dl>
<p>Mathematical <a href="Pseudocode#Common_mathematical_symbols" title="Pseudocode">pseudo code</a> assignments are generally depicted with a left-arrow.
</p><p>Some platforms put the expression on the left and the variable on the right:
</p>
<dl><dd><table class="wikitable">
<tbody><tr>
<td style="padding-right: 1em"><code>MOVE <i>expression</i> TO <i>variable</i></code></td>
<td><a href="COBOL" title="COBOL">COBOL</a>
</td></tr>
<tr>
<td style="padding-right: 1em"><code><i>expression</i> → <i>variable</i></code></td>
<td><a href="TI-BASIC" title="TI-BASIC">TI-BASIC</a>, <a href="Casio_BASIC" title="Casio BASIC">Casio BASIC</a>
</td></tr>
<tr>
<td style="padding-right: 1em"><code><i>expression</i> -> <i>variable</i></code></td>
<td><a href="POP-2" title="POP-2">POP-2</a>, <a href="BETA_(programming_language)" title="BETA (programming language)">BETA</a>, <a href="R_(programming_language)" title="R (programming language)">R</a>
</td></tr>
<tr>
<td style="padding-right: 1em"><code>put <i>expression</i> into <i>variable</i></code></td>
<td><a href="HyperTalk" title="HyperTalk">HyperTalk</a>, <a href="LiveCode" title="LiveCode">LiveCode</a>
</td></tr>
<tr>
<td style="padding-right: 1em"><code>PUT <i>expression</i> IN <i>variable</i></code></td>
<td><a href="ABC_(programming_language)" title="ABC (programming language)">ABC</a>
</td></tr></tbody></table></dd></dl>
<p>Some expression-oriented languages, such as <a href="Lisp_(programming_language)" title="Lisp (programming language)">Lisp</a><sup id="cite_ref-clisp_35-0" class="reference"><a href="#cite_note-clisp-35"><span class="cite-bracket">[</span>34<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-cmlisp_36-0" class="reference"><a href="#cite_note-cmlisp-36"><span class="cite-bracket">[</span>35<span class="cite-bracket">]</span></a></sup> and Tcl, uniformly use prefix (or postfix) syntax for all statements, including assignment.
</p>
<dl><dd><table class="wikitable">
<tbody><tr>
<td style="padding-right: 1em"><code>(setf <i>variable</i> <i>expression</i>)</code></td>
<td><a href="Common_Lisp" title="Common Lisp">Common Lisp</a>
</td></tr>
<tr>
<td><code>(set! <i>variable</i> <i>expression</i>)</code></td>
<td><a href="Scheme_(programming_language)" title="Scheme (programming language)">Scheme</a><sup id="cite_ref-scheme_37-0" class="reference"><a href="#cite_note-scheme-37"><span class="cite-bracket">[</span>36<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-schemeint_38-0" class="reference"><a href="#cite_note-schemeint-38"><span class="cite-bracket">[</span>37<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-sussman_39-0" class="reference"><a href="#cite_note-sussman-39"><span class="cite-bracket">[</span>38<span class="cite-bracket">]</span></a></sup>
</td></tr>
<tr>
<td><code>set <i>variable</i> <i>expression</i></code></td>
<td><a href="Tcl" title="Tcl">Tcl</a>
</td></tr>
<tr>
<td style="padding-right: 1em"><code><i>expression</i> <i>variable</i> !</code></td>
<td><a href="Forth_(programming_language)" title="Forth (programming language)">Forth</a>
</td></tr></tbody></table></dd></dl>
<div class="mw-heading mw-heading2"><h2 id="See_also">See also</h2></div>
<ul><li><a href="Assignment_operator_(C%2B%2B)" title="Assignment operator (C++)">Assignment operator (C++)</a></li>
<li><a href="Unification_(computer_science)" title="Unification (computer science)">Unification (computer science)</a></li>
<li><a href="Immutable_object" title="Immutable object">Immutable object</a></li>
<li><a href="Assignment_problem" title="Assignment problem">Assignment problem</a></li></ul>
<div class="mw-heading mw-heading2"><h2 id="Notes">Notes</h2></div>
<style data-mw-deduplicate="TemplateStyles:r1239543626">
/* start https://en.wikipedia.org/ */
.mw-parser-output .reflist{margin-bottom:0.5em;list-style-type:decimal}@media screen{.mw-parser-output .reflist{font-size:90%}}.mw-parser-output .reflist .references{font-size:100%;margin-bottom:0;list-style-type:inherit}.mw-parser-output .reflist-columns-2{column-width:30em}.mw-parser-output .reflist-columns-3{column-width:25em}.mw-parser-output .reflist-columns{margin-top:0.3em}.mw-parser-output .reflist-columns ol{margin-top:0}.mw-parser-output .reflist-columns li{page-break-inside:avoid;break-inside:avoid-column}.mw-parser-output .reflist-upper-alpha{list-style-type:upper-alpha}.mw-parser-output .reflist-upper-roman{list-style-type:upper-roman}.mw-parser-output .reflist-lower-alpha{list-style-type:lower-alpha}.mw-parser-output .reflist-lower-greek{list-style-type:lower-greek}.mw-parser-output .reflist-lower-roman{list-style-type:lower-roman}
/* end https://en.wikipedia.org/ */
</style><div class="reflist reflist-lower-alpha">
<div class="mw-references-wrap"><ol class="references">
<li id="cite_note-21"><span class="mw-cite-backlink"><b><a href="#cite_ref-21">^</a></b></span> <span class="reference-text">Use of <code>=</code> predates Fortran, though it was popularized by Fortran.</span>
</li>
</ol></div></div>
<div class="mw-heading mw-heading2"><h2 id="References">References</h2></div>
<div class="reflist reflist-columns references-column-width reflist-columns-2">
<ol class="references">
<li id="cite_note-2CS24-1"><span class="mw-cite-backlink">^ <a href="#cite_ref-2CS24_1-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-2CS24_1-1"><sup><i><b>b</b></i></sup></a></span> <span class="reference-text"><style data-mw-deduplicate="TemplateStyles:r1238218222">
/* start https://en.wikipedia.org/ */
.mw-parser-output cite.citation{font-style:inherit;word-wrap:break-word}.mw-parser-output .citation q{quotes:"\"""\"""'""'"}.mw-parser-output .citation:target{background-color:rgba(0,127,255,0.133)}.mw-parser-output .id-lock-free.id-lock-free a{background:url("./mw/Lock-green.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-limited.id-lock-limited a,.mw-parser-output .id-lock-registration.id-lock-registration a{background:url("./mw/Lock-gray-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-subscription.id-lock-subscription a{background:url("./mw/Lock-red-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .cs1-ws-icon a{background:url("./mw/Wikisource-logo.svg")right 0.1em center/12px no-repeat}body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-free a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-limited a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-registration a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-subscription a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .cs1-ws-icon a{background-size:contain;padding:0 1em 0 0}.mw-parser-output .cs1-code{color:inherit;background:inherit;border:none;padding:inherit}.mw-parser-output .cs1-hidden-error{display:none;color:var(--color-error,#d33)}.mw-parser-output .cs1-visible-error{color:var(--color-error,#d33)}.mw-parser-output .cs1-maint{display:none;color:#085;margin-left:0.3em}.mw-parser-output .cs1-kern-left{padding-left:0.2em}.mw-parser-output .cs1-kern-right{padding-right:0.2em}.mw-parser-output .citation .mw-selflink{font-weight:inherit}@media screen{.mw-parser-output .cs1-format{font-size:95%}html.skin-theme-clientpref-night .mw-parser-output .cs1-maint{color:#18911f}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .cs1-maint{color:#18911f}}
/* end https://en.wikipedia.org/ */
</style><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://web.archive.org/web/20060424045449/http://www.csc.liv.ac.uk/~frans/OldLectures/2CS24/declarative.html">"2cs24 Declarative"</a>. <i>www.csc.liv.ac.uk</i>. Archived from <a rel="nofollow" class="external text" href="http://www.csc.liv.ac.uk/~frans/OldLectures/2CS24/declarative.html">the original</a> on 24 April 2006<span class="reference-accessdate">. Retrieved <span class="nowrap">20 April</span> 2018</span>.</cite></span>
</li>
<li id="cite_note-weisskop-2"><span class="mw-cite-backlink">^ <a href="#cite_ref-weisskop_2-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-weisskop_2-1"><sup><i><b>b</b></i></sup></a> <a href="#cite_ref-weisskop_2-2"><sup><i><b>c</b></i></sup></a></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://web.archive.org/web/20160304035233/http://www.cs.uah.edu/~weisskop/Notes424-524/ch12.ppt">"Imperative Programming"</a>. <i>uah.edu</i>. Archived from <a rel="nofollow" class="external text" href="http://www.cs.uah.edu/~weisskop/Notes424-524/ch12.ppt">the original</a> on 4 March 2016<span class="reference-accessdate">. Retrieved <span class="nowrap">20 April</span> 2018</span>.</cite></span>
</li>
<li id="cite_note-Flaig2008-3"><span class="mw-cite-backlink">^ <a href="#cite_ref-Flaig2008_3-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-Flaig2008_3-1"><sup><i><b>b</b></i></sup></a> <a href="#cite_ref-Flaig2008_3-2"><sup><i><b>c</b></i></sup></a></span> <span class="reference-text"><cite id="CITEREFRuediger-Marcus_Flaig2008" class="citation book cs1">Ruediger-Marcus Flaig (2008). <a rel="nofollow" class="external text" href="https://books.google.com/books?id=kS7Dye-dv54C&pg=PA98"><i>Bioinformatics programming in Python: a practical course for beginners</i></a>. Wiley-VCH. pp. <span class="nowrap">98–</span>99. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <bdi>978-3-527-32094-3</bdi><span class="reference-accessdate">. Retrieved <span class="nowrap">25 December</span> 2010</span>.</cite></span>
</li>
<li id="cite_note-Bruce_Tate-4"><span class="mw-cite-backlink">^ <a href="#cite_ref-Bruce_Tate_4-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-Bruce_Tate_4-1"><sup><i><b>b</b></i></sup></a> <a href="#cite_ref-Bruce_Tate_4-2"><sup><i><b>c</b></i></sup></a> <a href="#cite_ref-Bruce_Tate_4-3"><sup><i><b>d</b></i></sup></a> <a href="#cite_ref-Bruce_Tate_4-4"><sup><i><b>e</b></i></sup></a></span> <span class="reference-text"><a rel="nofollow" class="external text" href="http://www.ibm.com/developerworks/java/library/j-cb07186.html">Crossing borders: Explore functional programming with Haskell</a> <a rel="nofollow" class="external text" href="https://web.archive.org/web/20101119190821/http://www.ibm.com/developerworks/java/library/j-cb07186.html">Archived</a> November 19, 2010, at the <a href="Wayback_Machine" title="Wayback Machine">Wayback Machine</a>, by Bruce Tate</span>
</li>
<li id="cite_note-Mitchell2003-5"><span class="mw-cite-backlink"><b><a href="#cite_ref-Mitchell2003_5-0">^</a></b></span> <span class="reference-text"><cite id="CITEREFMitchell2003" class="citation book cs1"><a href="John_C._Mitchell" title="John C. Mitchell">Mitchell, John C.</a> (2003). <a rel="nofollow" class="external text" href="https://books.google.com/books?id=7Uh8XGfJbEIC&pg=PA23"><i>Concepts in programming languages</i></a>. Cambridge University Press. p. 23. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <bdi>978-0-521-78098-8</bdi><span class="reference-accessdate">. Retrieved <span class="nowrap">3 January</span> 2011</span>.</cite></span>
</li>
<li id="cite_note-csci210-6"><span class="mw-cite-backlink"><b><a href="#cite_ref-csci210_6-0">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://web.archive.org/web/20110716201414/http://www.seas.gwu.edu/~bell/csci210/lectures/imperative_languages.pdf">"Imperative Programming Languages (IPL)"</a> <span class="cs1-format">(PDF)</span>. <i>gwu.edu</i>. Archived from <a rel="nofollow" class="external text" href="http://www.seas.gwu.edu/~bell/csci210/lectures/imperative_languages.pdf">the original</a> <span class="cs1-format">(PDF)</span> on 2011-07-16<span class="reference-accessdate">. Retrieved <span class="nowrap">20 April</span> 2018</span>.</cite></span>
</li>
<li id="cite_note-Mitchell2003.1-7"><span class="mw-cite-backlink"><b><a href="#cite_ref-Mitchell2003.1_7-0">^</a></b></span> <span class="reference-text"><cite id="CITEREFJohn_C._Mitchell2003" class="citation book cs1">John C. Mitchell (2003). <a rel="nofollow" class="external text" href="https://books.google.com/books?id=7Uh8XGfJbEIC&pg=PA81"><i>Concepts in programming languages</i></a>. Cambridge University Press. pp. <span class="nowrap">81–</span>82. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <bdi>978-0-521-78098-8</bdi><span class="reference-accessdate">. Retrieved <span class="nowrap">3 January</span> 2011</span>.</cite></span>
</li>
<li id="cite_note-haskell-8"><span class="mw-cite-backlink"><b><a href="#cite_ref-haskell_8-0">^</a></b></span> <span class="reference-text"><cite id="CITEREFHudak2000" class="citation book cs1">Hudak, Paul (2000). <i>The Haskell School of Expression: Learning Functional Programming Through Multimedia</i>. Cambridge: Cambridge University Press. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <bdi>0-521-64408-9</bdi>.</cite></span>
</li>
<li id="cite_note-9"><span class="mw-cite-backlink"><b><a href="#cite_ref-9">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://docs.python.org/reference/simple_stmts.html#assignment-statements">"7. Simple statements — Python 3.6.5 documentation"</a>. <i>docs.python.org</i><span class="reference-accessdate">. Retrieved <span class="nowrap">20 April</span> 2018</span>.</cite></span>
</li>
<li id="cite_note-10"><span class="mw-cite-backlink"><b><a href="#cite_ref-10">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="http://www.lispworks.com/documentation/HyperSpec/Body/m_setf_.htm#psetf">"CLHS: Macro SETF, PSETF"</a>. <i>Common Lisp Hyperspec</i>. LispWorks<span class="reference-accessdate">. Retrieved <span class="nowrap">23 April</span> 2019</span>.</cite></span>
</li>
<li id="cite_note-11"><span class="mw-cite-backlink"><b><a href="#cite_ref-11">^</a></b></span> <span class="reference-text">The Go Programming Language Specification: <a rel="nofollow" class="external text" href="https://golang.org/ref/spec#Assignments">Assignments</a></span>
</li>
<li id="cite_note-occam-12"><span class="mw-cite-backlink"><b><a href="#cite_ref-occam_12-0">^</a></b></span> <span class="reference-text"><cite id="CITEREFINMOS_Limited1988" class="citation book cs1">INMOS Limited, ed. (1988). <i>Occam 2 Reference Manual</i>. New Jersey: Prentice Hall. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <bdi>0-13-629312-3</bdi>.</cite></span>
</li>
<li id="cite_note-perl-13"><span class="mw-cite-backlink"><b><a href="#cite_ref-perl_13-0">^</a></b></span> <span class="reference-text"><cite id="CITEREFWallChristiansen,_TomSchwartz,_Randal_C.1996" class="citation book cs1"><a href="Larry_Wall" title="Larry Wall">Wall, Larry</a>; Christiansen, Tom; Schwartz, Randal C. (1996). <a rel="nofollow" class="external text" href="https://archive.org/details/programmingperl00wall"><i>Perl Programming Language</i></a> (2 ed.). Cambridge: O´Reilly. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <bdi>1-56592-149-6</bdi>.</cite></span>
</li>
<li id="cite_note-python-14"><span class="mw-cite-backlink"><b><a href="#cite_ref-python_14-0">^</a></b></span> <span class="reference-text"><cite id="CITEREFLutz2001" class="citation book cs1">Lutz, Mark (2001). <a rel="nofollow" class="external text" href="https://archive.org/details/programmingpytho00lutz"><i>Python Programming Language</i></a> (2 ed.). Sebastopol: O´Reilly. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <bdi>0-596-00085-5</bdi>.</cite></span>
</li>
<li id="cite_note-ruby-15"><span class="mw-cite-backlink"><b><a href="#cite_ref-ruby_15-0">^</a></b></span> <span class="reference-text"><cite id="CITEREFThomasHunt,_Andrew2001" class="citation book cs1">Thomas, David; Hunt, Andrew (2001). <a rel="nofollow" class="external text" href="https://archive.org/details/programmingruby000thom"><i>Programming Ruby: The Pragmatic Programmer's Guide</i></a>. Upper Saddle River: Addison Wesley. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <bdi>0-201-71089-7</bdi>.</cite></span>
</li>
<li id="cite_note-16"><span class="mw-cite-backlink"><b><a href="#cite_ref-16">^</a></b></span> <span class="reference-text">D.W. Barron <i>et al.</i>, "The main features of CPL", <i>Computer Journal</i> <b>6</b>:2:140 (1963). <a rel="nofollow" class="external text" href="https://archive.today/20120707200431/http://comjnl.oxfordjournals.org/cgi/reprint/6/2/134">full text (subscription)</a></span>
</li>
<li id="cite_note-17"><span class="mw-cite-backlink"><b><a href="#cite_ref-17">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="http://legacy.python.org/dev/peps/pep-3132/">"PEP 3132 -- Extended Iterable Unpacking"</a>. <i>legacy.python.org</i><span class="reference-accessdate">. Retrieved <span class="nowrap">20 April</span> 2018</span>.</cite></span>
</li>
<li id="cite_note-18"><span class="mw-cite-backlink"><b><a href="#cite_ref-18">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment">"Destructuring assignment"</a>. <i>MDN Web Docs</i><span class="reference-accessdate">. Retrieved <span class="nowrap">20 April</span> 2018</span>.</cite></span>
</li>
<li id="cite_note-19"><span class="mw-cite-backlink"><b><a href="#cite_ref-19">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://docs.microsoft.com/en-us/dotnet/csharp/deconstruct">"Deconstructing tuples and other types"</a>. <i>Microsoft Docs</i>. Microsoft<span class="reference-accessdate">. Retrieved <span class="nowrap">29 August</span> 2019</span>.</cite></span>
</li>
<li id="cite_note-20"><span class="mw-cite-backlink"><b><a href="#cite_ref-20">^</a></b></span> <span class="reference-text"><a rel="nofollow" class="external text" href="https://golang.org/doc/effective_go.html">Effective Go</a>: <a rel="nofollow" class="external text" href="https://golang.org/doc/effective_go.html#for">for</a>,
"Finally, Go has no comma operator and ++ and -- are statements not expressions. Thus if you want to run multiple variables in a for you should use parallel assignment (although that precludes ++ and --)."</span>
</li>
<li id="cite_note-22"><span class="mw-cite-backlink"><b><a href="#cite_ref-22">^</a></b></span> <span class="reference-text"><cite id="CITEREFNiklaus_Wirth" class="citation web cs1">Niklaus Wirth. <a rel="nofollow" class="external text" href="https://citeseerx.ist.psu.edu/doc/10.1.1.88.8309">"Good Ideas, Through the Looking Glass"</a>. <a href="CiteSeerX_(identifier)" class="mw-redirect" title="CiteSeerX (identifier)">CiteSeerX</a> <span class="id-lock-free" title="Freely accessible"><a rel="nofollow" class="external text" href="https://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.88.8309">10.1.1.88.8309</a></span>.</cite></span>
</li>
<li id="cite_note-23"><span class="mw-cite-backlink"><b><a href="#cite_ref-23">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://www3.ntu.edu.sg/home/ehchua/programming/cpp/cp1_Basics.html#zz-3.6">"C++ Programming Language. Basics"</a>. <i>ntu.edu.sg</i>. 2013-06-01<span class="reference-accessdate">. Retrieved <span class="nowrap">2024-06-21</span></span>.</cite></span>
</li>
<li id="cite_note-24"><span class="mw-cite-backlink"><b><a href="#cite_ref-24">^</a></b></span> <span class="reference-text"><cite id="CITEREFCorbet2003" class="citation web cs1">Corbet (6 November 2003). <a rel="nofollow" class="external text" href="https://lwn.net/Articles/57135/">"An attempt to backdoor the kernel"</a>. <i>lwn.net</i><span class="reference-accessdate">. Retrieved <span class="nowrap">2024-06-21</span></span>.</cite></span>
</li>
<li id="cite_note-25"><span class="mw-cite-backlink"><b><a href="#cite_ref-25">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://gcc.gnu.org/onlinedocs/gcc/Static-Analyzer-Options.html">"Static Analyzer Options (Using the GNU Compiler Collection (GCC))"</a>. <i>gcc.gnu.org</i><span class="reference-accessdate">. Retrieved <span class="nowrap">2024-06-21</span></span>.</cite></span>
</li>
<li id="cite_note-26"><span class="mw-cite-backlink"><b><a href="#cite_ref-26">^</a></b></span> <span class="reference-text"><cite id="CITEREFDeitelDeitel2022" class="citation web cs1">Deitel, Paul; Deitel, Harvey (2022-10-25). <a rel="nofollow" class="external text" href="https://domyassignments.com/">"C++ Control Statements, Part 2"</a>. <i>Domyassignments</i><span class="reference-accessdate">. Retrieved <span class="nowrap">2024-06-21</span></span>.</cite></span>
</li>
<li id="cite_note-pascal-27"><span class="mw-cite-backlink"><b><a href="#cite_ref-pascal_27-0">^</a></b></span> <span class="reference-text"><cite id="CITEREFMoore1980" class="citation book cs1">Moore, Lawrie (1980). <i>Foundations of Programming with Pascal</i>. New York: John Wiley & Sons. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <bdi>0-470-26939-1</bdi>.</cite></span>
</li>
<li id="cite_note-eiffel1-28"><span class="mw-cite-backlink"><b><a href="#cite_ref-eiffel1_28-0">^</a></b></span> <span class="reference-text"><cite id="CITEREFMeyer1992" class="citation book cs1"><a href="Bertrand_Meyer" title="Bertrand Meyer">Meyer, Bertrand</a> (1992). <i>Eiffel the Language</i>. Hemel Hempstead: Prentice Hall International(UK). <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <bdi>0-13-247925-7</bdi>.</cite></span>
</li>
<li id="cite_note-eiffel2-29"><span class="mw-cite-backlink"><b><a href="#cite_ref-eiffel2_29-0">^</a></b></span> <span class="reference-text"><cite id="CITEREFWiener1996" class="citation book cs1">Wiener, Richard (1996). <i>An Object-Oriented Introduction to Computer Science Using Eiffel</i>. Upper Saddle River, New Jersey: Prentice Hall. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <bdi>0-13-183872-5</bdi>.</cite></span>
</li>
<li id="cite_note-dylan-30"><span class="mw-cite-backlink"><b><a href="#cite_ref-dylan_30-0">^</a></b></span> <span class="reference-text"><cite id="CITEREFFeinbergKeene,_Sonya_E.Mathews,_Robert_O.Withington,_P._Tucker1997" class="citation book cs1">Feinberg, Neal; Keene, Sonya E.; Mathews, Robert O.; Withington, P. Tucker (1997). <i>Dylan Programming</i>. Massachusetts: Addison Wesley. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <bdi>0-201-47976-1</bdi>.</cite></span>
</li>
<li id="cite_note-31"><span class="mw-cite-backlink"><b><a href="#cite_ref-31">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://www.python.org/dev/peps/pep-0572/">"PEP 572 – Assignment Expressions"</a>. <i>python.org</i>. 28 February 2018<span class="reference-accessdate">. Retrieved <span class="nowrap">4 March</span> 2020</span>.</cite></span>
</li>
<li id="cite_note-32"><span class="mw-cite-backlink"><b><a href="#cite_ref-32">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://golang.org/ref/spec#Short_variable_declarations">"The Go Programming Language Specification - The Go Programming Language"</a>. <i>golang.org</i><span class="reference-accessdate">. Retrieved <span class="nowrap">20 April</span> 2018</span>.</cite></span>
</li>
<li id="cite_note-ml-33"><span class="mw-cite-backlink"><b><a href="#cite_ref-ml_33-0">^</a></b></span> <span class="reference-text"><cite id="CITEREFUllman1998" class="citation book cs1">Ullman, Jeffrey D. (1998). <i>Elements of ML Programming: ML97 Edition</i>. Englewood Cliffs, New Jersey: Prentice Hall. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <bdi>0-13-790387-1</bdi>.</cite></span>
</li>
<li id="cite_note-aplbook-34"><span class="mw-cite-backlink"><b><a href="#cite_ref-aplbook_34-0">^</a></b></span> <span class="reference-text"><cite id="CITEREFIverson1962" class="citation book cs1"><a href="Kenneth_E._Iverson" title="Kenneth E. Iverson">Iverson, Kenneth E.</a> (1962). <a rel="nofollow" class="external text" href="https://web.archive.org/web/20090604091725/http://www.softwarepreservation.org/projects/apl/book/APROGRAMMING%20LANGUAGE/view"><i>A Programming Language</i></a>. John Wiley and Sons. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <bdi>0-471-43014-5</bdi>. Archived from <a rel="nofollow" class="external text" href="http://www.softwarepreservation.org/projects/apl/book/APROGRAMMING%20LANGUAGE/view">the original</a> on 2009-06-04<span class="reference-accessdate">. Retrieved <span class="nowrap">2010-05-09</span></span>.</cite> <span class="cs1-hidden-error citation-comment"><code class="cs1-code">{{cite book}}</code>: </span><span class="cs1-hidden-error citation-comment">ISBN / Date incompatibility (help)</span></span>
</li>
<li id="cite_note-clisp-35"><span class="mw-cite-backlink"><b><a href="#cite_ref-clisp_35-0">^</a></b></span> <span class="reference-text"><cite id="CITEREFGraham1996" class="citation book cs1"><a href="Paul_Graham_(computer_programmer)" class="mw-redirect" title="Paul Graham (computer programmer)">Graham, Paul</a> (1996). <a rel="nofollow" class="external text" href="https://archive.org/details/ansicommonlisp00grah"><i>ANSI Common Lisp</i></a>. New Jersey: Prentice Hall. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <bdi>0-13-370875-6</bdi>.</cite></span>
</li>
<li id="cite_note-cmlisp-36"><span class="mw-cite-backlink"><b><a href="#cite_ref-cmlisp_36-0">^</a></b></span> <span class="reference-text"><cite id="CITEREFSteele1990" class="citation book cs1"><a href="Guy_L._Steele%2C_Jr." class="mw-redirect" title="Guy L. Steele, Jr.">Steele, Guy L.</a> (1990). <i>Common Lisp: The Language</i>. Lexington: Digital Press. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <bdi>1-55558-041-6</bdi>.</cite></span>
</li>
<li id="cite_note-scheme-37"><span class="mw-cite-backlink"><b><a href="#cite_ref-scheme_37-0">^</a></b></span> <span class="reference-text"><cite id="CITEREFDybvig1996" class="citation book cs1">Dybvig, R. Kent (1996). <i>The Scheme Programming Language: ANSI Scheme</i>. New Jersey: Prentice Hall. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <bdi>0-13-454646-6</bdi>.</cite></span>
</li>
<li id="cite_note-schemeint-38"><span class="mw-cite-backlink"><b><a href="#cite_ref-schemeint_38-0">^</a></b></span> <span class="reference-text"><cite id="CITEREFSmith1988" class="citation book cs1">Smith, Jerry D. (1988). <i>Introduction to Scheme</i>. New Jersey: Prentice Hall. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <bdi>0-13-496712-7</bdi>.</cite></span>
</li>
<li id="cite_note-sussman-39"><span class="mw-cite-backlink"><b><a href="#cite_ref-sussman_39-0">^</a></b></span> <span class="reference-text"><cite id="CITEREFAbelsonSussman,_Gerald_JaySussman,_Julie1996" class="citation book cs1">Abelson, Harold; Sussman, Gerald Jay; Sussman, Julie (1996). <i>Structure and Interpretation of Computer Programs</i>. New Jersey: McGraw-Hill. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <bdi>0-07-000484-6</bdi>.</cite></span>
</li>
</ol></div></div><!--htdig_noindex--><div><div class="zim-footer">
This article is issued from <a class="external text" title="Last edited on 2025-05-30" href="https://en.wikipedia.org/wiki/?title=Assignment_(computer_science)&oldid=1293040104">Wikipedia</a>. The text is available under <a class="external text" href="https://creativecommons.org/licenses/by-sa/4.0/deed.en">Creative Commons Attribution-Share Alike 4.0</a> unless otherwise noted. Additional terms may apply for the media files.
</div>
</div><!--/htdig_noindex--></div>
</div>
</main>
</div>
</div>
</div>
</body></html>